package com.xinghen.common.core.support;

import com.xinghen.common.base.model.dto.BaseTree;

import java.io.Serializable;
import java.util.List;

/**
 * @author xinghen
 * @ClassName: ITree
 * @Package: com.xinghen.common.core.support
 * @Description tree service 接口
 * @create 2018-04-17 11:34
 */
public interface ITree<T extends BaseTree<T, ID>, ID extends Serializable> {

    /**
     * 获取指定节点下的所有子节点组成的树
     *
     * @param list
     * @param pid
     * @return
     */
    List<T> getChildrenTree(List<T> list, ID pid);

    /**
     * 获取指定节点下的所有子节点集合
     *
     * @param list
     * @param t
     * @return
     */
    List<T> getChildrenList(List<T> list, T t);

    /**
     * 递归指定节点下的所有子节点
     *
     * @param list
     * @param t
     */
    void recursionFn(List<T> list, T t);

    /**
     * 判断是否还有下一个子节点
     *
     * @param list
     * @param t
     * @return
     */
    boolean hasChild(List<T> list, T t);

}
